/*
 * Copyright (c) 2024-2025 Huawei Device Co., Ltd.
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#include "core/components_ng/base/frame_node.h"
#include "core/interfaces/native/utility/converter.h"
#include "arkoala_api_generated.h"

namespace OHOS::Ace::NG::GeneratedModifier {
namespace GestureOpsAccessor {
Ark_NativePointer CreateTapGestureImpl(const Ark_Number* fingers,
                                       const Ark_Number* count,
                                       const Ark_Number* distanceThreshold,
                                       Ark_Boolean isFingerCountLimited)
{
    return {};
}
Ark_NativePointer CreateLongPressGestureImpl(const Ark_Number* fingers,
                                             Ark_Boolean repeat,
                                             const Ark_Number* duration,
                                             Ark_Boolean isFingerCountLimited)
{
    return {};
}
Ark_NativePointer CreatePanGestureImpl(const Ark_Number* fingers,
                                       Ark_PanDirection direction,
                                       const Ark_Number* distance,
                                       Ark_Boolean isFingerCountLimited)
{
    return {};
}
Ark_NativePointer CreatePanGestureWithPanGestureOptionsImpl(Ark_NativePointer panGestureOptions)
{
    auto frameNode = reinterpret_cast<FrameNode *>(node);
    CHECK_NULL_VOID(frameNode);
    //auto convValue = Converter::Convert<type>(panGestureOptions);
    //auto convValue = Converter::OptConvert<type>(panGestureOptions); // for enums
    // undefinedModelNG::SetCreatePanGestureWithPanGestureOptions(frameNode, convValue);
    return {};
}
Ark_NativePointer CreatePinchGestureImpl(const Ark_Number* fingers,
                                         const Ark_Number* distance,
                                         Ark_Boolean isFingerCountLimited)
{
    return {};
}
Ark_NativePointer CreateRotationGestureImpl(const Ark_Number* fingers,
                                            const Ark_Number* angle,
                                            Ark_Boolean isFingerCountLimited)
{
    return {};
}
Ark_NativePointer CreateSwipeGestureImpl(const Ark_Number* fingers,
                                         Ark_SwipeDirection direction,
                                         const Ark_Number* speed,
                                         Ark_Boolean isFingerCountLimited)
{
    return {};
}
Ark_NativePointer CreateGestureGroupImpl(Ark_GestureMode mode)
{
    return {};
}
void SetOnActionImpl(Ark_NativePointer gesture,
                     const Callback_GestureEvent_Void* onAction)
{
    auto frameNode = reinterpret_cast<FrameNode *>(node);
    CHECK_NULL_VOID(frameNode);
    //auto convValue = Converter::Convert<type>(gesture);
    //auto convValue = Converter::OptConvert<type>(gesture); // for enums
    // undefinedModelNG::SetSetOnAction(frameNode, convValue);
}
void SetOnActionStartImpl(Ark_NativePointer gesture,
                          const Callback_GestureEvent_Void* onActionStart)
{
    auto frameNode = reinterpret_cast<FrameNode *>(node);
    CHECK_NULL_VOID(frameNode);
    //auto convValue = Converter::Convert<type>(gesture);
    //auto convValue = Converter::OptConvert<type>(gesture); // for enums
    // undefinedModelNG::SetSetOnActionStart(frameNode, convValue);
}
void SetOnActionUpdateImpl(Ark_NativePointer gesture,
                           const Callback_GestureEvent_Void* onActionUpdate)
{
    auto frameNode = reinterpret_cast<FrameNode *>(node);
    CHECK_NULL_VOID(frameNode);
    //auto convValue = Converter::Convert<type>(gesture);
    //auto convValue = Converter::OptConvert<type>(gesture); // for enums
    // undefinedModelNG::SetSetOnActionUpdate(frameNode, convValue);
}
void SetOnActionEndImpl(Ark_NativePointer gesture,
                        const Callback_GestureEvent_Void* onActionEnd)
{
    auto frameNode = reinterpret_cast<FrameNode *>(node);
    CHECK_NULL_VOID(frameNode);
    //auto convValue = Converter::Convert<type>(gesture);
    //auto convValue = Converter::OptConvert<type>(gesture); // for enums
    // undefinedModelNG::SetSetOnActionEnd(frameNode, convValue);
}
void SetOnActionCancelImpl(Ark_NativePointer gesture,
                           const Callback_GestureEvent_Void* onActionCancel)
{
    auto frameNode = reinterpret_cast<FrameNode *>(node);
    CHECK_NULL_VOID(frameNode);
    //auto convValue = Converter::Convert<type>(gesture);
    //auto convValue = Converter::OptConvert<type>(gesture); // for enums
    // undefinedModelNG::SetSetOnActionCancel(frameNode, convValue);
}
void SetOnCancelImpl(Ark_NativePointer gesture,
                     const Callback_Void* onCancel)
{
    auto frameNode = reinterpret_cast<FrameNode *>(node);
    CHECK_NULL_VOID(frameNode);
    //auto convValue = Converter::Convert<type>(gesture);
    //auto convValue = Converter::OptConvert<type>(gesture); // for enums
    // undefinedModelNG::SetSetOnCancel(frameNode, convValue);
}
void SetGestureTagImpl(Ark_NativePointer gesture,
                       const Ark_String* tag)
{
    auto frameNode = reinterpret_cast<FrameNode *>(node);
    CHECK_NULL_VOID(frameNode);
    //auto convValue = Converter::Convert<type>(gesture);
    //auto convValue = Converter::OptConvert<type>(gesture); // for enums
    // undefinedModelNG::SetSetGestureTag(frameNode, convValue);
}
void SetAllowedTypesImpl(Ark_NativePointer gesture,
                         const Array_SourceTool* types)
{
    auto frameNode = reinterpret_cast<FrameNode *>(node);
    CHECK_NULL_VOID(frameNode);
    //auto convValue = Converter::Convert<type>(gesture);
    //auto convValue = Converter::OptConvert<type>(gesture); // for enums
    // undefinedModelNG::SetSetAllowedTypes(frameNode, convValue);
}
void AddGestureToNodeImpl(Ark_NativePointer node,
                          const Ark_Number* priority,
                          Ark_GestureMask mask,
                          Ark_NativePointer gesture,
                          Ark_Boolean isModifier)
{
    auto frameNode = reinterpret_cast<FrameNode *>(node);
    CHECK_NULL_VOID(frameNode);
    //auto convValue = Converter::Convert<type>(node);
    //auto convValue = Converter::OptConvert<type>(node); // for enums
    // undefinedModelNG::SetAddGestureToNode(frameNode, convValue);
}
void AddGestureToGroupImpl(Ark_NativePointer group,
                           Ark_NativePointer gesture)
{
    auto frameNode = reinterpret_cast<FrameNode *>(node);
    CHECK_NULL_VOID(frameNode);
    //auto convValue = Converter::Convert<type>(group);
    //auto convValue = Converter::OptConvert<type>(group); // for enums
    // undefinedModelNG::SetAddGestureToGroup(frameNode, convValue);
}
void RemoveGestureByTagImpl(Ark_NativePointer node,
                            const Ark_String* tag)
{
    auto frameNode = reinterpret_cast<FrameNode *>(node);
    CHECK_NULL_VOID(frameNode);
    //auto convValue = Converter::Convert<type>(node);
    //auto convValue = Converter::OptConvert<type>(node); // for enums
    // undefinedModelNG::SetRemoveGestureByTag(frameNode, convValue);
}
void ClearGesturesImpl(Ark_NativePointer node)
{
    auto frameNode = reinterpret_cast<FrameNode *>(node);
    CHECK_NULL_VOID(frameNode);
    //auto convValue = Converter::Convert<type>(node);
    //auto convValue = Converter::OptConvert<type>(node); // for enums
    // undefinedModelNG::SetClearGestures(frameNode, convValue);
}
Ark_Number GetGestureEventTypeImpl(Ark_NativePointer event)
{
    auto frameNode = reinterpret_cast<FrameNode *>(node);
    CHECK_NULL_VOID(frameNode);
    //auto convValue = Converter::Convert<type>(event);
    //auto convValue = Converter::OptConvert<type>(event); // for enums
    // undefinedModelNG::SetGetGestureEventType(frameNode, convValue);
    return {};
}
Ark_Boolean IsScrollableComponentImpl(Ark_NativePointer event)
{
    auto frameNode = reinterpret_cast<FrameNode *>(node);
    CHECK_NULL_VOID(frameNode);
    //auto convValue = Converter::Convert<type>(event);
    //auto convValue = Converter::OptConvert<type>(event); // for enums
    // undefinedModelNG::SetIsScrollableComponent(frameNode, convValue);
    return {};
}
} // GestureOpsAccessor
const GENERATED_ArkUIGestureOpsAccessor* GetGestureOpsAccessor()
{
    static const GENERATED_ArkUIGestureOpsAccessor GestureOpsAccessorImpl {
        GestureOpsAccessor::CreateTapGestureImpl,
        GestureOpsAccessor::CreateLongPressGestureImpl,
        GestureOpsAccessor::CreatePanGestureImpl,
        GestureOpsAccessor::CreatePanGestureWithPanGestureOptionsImpl,
        GestureOpsAccessor::CreatePinchGestureImpl,
        GestureOpsAccessor::CreateRotationGestureImpl,
        GestureOpsAccessor::CreateSwipeGestureImpl,
        GestureOpsAccessor::CreateGestureGroupImpl,
        GestureOpsAccessor::SetOnActionImpl,
        GestureOpsAccessor::SetOnActionStartImpl,
        GestureOpsAccessor::SetOnActionUpdateImpl,
        GestureOpsAccessor::SetOnActionEndImpl,
        GestureOpsAccessor::SetOnActionCancelImpl,
        GestureOpsAccessor::SetOnCancelImpl,
        GestureOpsAccessor::SetGestureTagImpl,
        GestureOpsAccessor::SetAllowedTypesImpl,
        GestureOpsAccessor::AddGestureToNodeImpl,
        GestureOpsAccessor::AddGestureToGroupImpl,
        GestureOpsAccessor::RemoveGestureByTagImpl,
        GestureOpsAccessor::ClearGesturesImpl,
        GestureOpsAccessor::GetGestureEventTypeImpl,
        GestureOpsAccessor::IsScrollableComponentImpl,
    };
    return &GestureOpsAccessorImpl;
}

}
